package com.pg.auth.service;

import com.pg.auth.model.dto.sysroleuser.SysRoleUserDTO;
import com.pg.auth.model.dto.sysroleuser.SysRoleUserReq;
import com.pg.auth.model.dto.sysroleuser.SysRoleUserVO;
import com.pg.base.component.PageVO;
import com.pg.base.component.Pager;
import com.pg.base.vo.LoginVO;

import java.util.List;

/***
 * SysRoleUserService
 * @author : huhuaping
 * @Date : 2024-06-06 20:59:34
 */
public interface SysRoleUserService {

    /**
    *  分页查询
    * @param pageReq 查询条件
    * @return 分页对象
    */
    PageVO<SysRoleUserVO> page(Pager<SysRoleUserReq,SysRoleUserVO> pageReq);

    /**
     *  集合查询
     * @param sysRoleUserReq 查询条件
     * @return 集合
     */
    List<SysRoleUserVO> list(SysRoleUserReq sysRoleUserReq);

    /**
     * 根据ID查询SysRoleUser
     * @ param roleUserId 记录ID
     * @ return VO对象
     */
    SysRoleUserVO getById(Long roleUserId);


    /**
     * 新增
     * @param sysRoleUserDTO 新增数据对象
     * @param userVo  用户对象
     * @return id  记录主键ID
     */
    Long add(SysRoleUserDTO sysRoleUserDTO,LoginVO userVo);


    /**
     * 根据id修改
     * @param sysRoleUserDTO 修改数据对象
     * @return number 修改条数
     */
    Integer updateById(SysRoleUserDTO sysRoleUserDTO,LoginVO userVo);

    /**
     * 根据ID删除SysRoleUser
     * @param roleUserId 删除记录ID
     * @return 删除条数
     */
    int deleteById(Long roleUserId);


    /**
     * 保存用户与角色关系
     * @param userId 用户ID
     * @param roleIds 角色ID
     * @param userVo 用户对象
     */
    int save(Long userId, List<Long> roleIds, LoginVO userVo);
}
